﻿using System;
namespace RaytracerLib
{
    public static class Constants
    {
        public const float FLOAT_PRECISION = 1e-4f;
        public const float COLOR_PRECISION = 1e-4f;

        public const double D3D_TEST_PRECISION = 5e-4;

        public const double TRIANGLES_UV_INTERSECTION = 1e-6;

        public const double TRANSFLUENT_SHADOWS_ANGLE_POWER_EXPONENT = 0.25;

        public const double DOUBLE_PRECISION = 1e-12;

        public const double ALGEBRAIC_QUARTIC_SOLVER_QUARTIC_PRECISION = 1e-12;
        public const double ALGEBRAIC_QUARTIC_SOLVER_CUBIC_DELTA_PRECISION = 1e-18;

        public const int ROOT_FINDER_MAXIMUM_ITERATIONS = 800;
        public const double ROOT_FINDER_ABSOLUTE_ERROR = 1e-12;

        public const int STURM_ANY_ROOTS_MAXIMUM_ITERATIONS = 32;
        public const int STURM_FIND_ONE_ROOT_AREA_MAXIMUM_ITERATIONS = 800;

        public const double MINIMAL_DISTANT = 1e-8;
        public const double POLYNOMIAL_SURFACE_FROM_MOVE_DELTA = MINIMAL_DISTANT * 1000;
        public const double BOUND_BOX_MARGIN = MINIMAL_DISTANT * 100;

        public const double DOUBLE_MIN = Double.MinValue / 10;
        public const double DOUBLE_MAX = Double.MaxValue / 10;
    }
}